const arr = [1, 2, 3, 0, 5]

// Array.prototype.myForEach = function (callback) {
//     for (let i = 0; i < this.length; i++) {
//         callback(this[i], i, this)
//     }
// }

// arr.myForEach(item => {
//     console.log(item)
// })


// Array.prototype.my_map = function (callback) {
//     const newArr = []
//     for (let i = 0; i < this.length; i++) {
//         newArr.push(callback(this[i], i, this))
//     }
//     console.log(newArr);

// }
// arr.my_map(item => {
//     return item;
// })


// Array.prototype.my_filter = function (callback) {
//     const filterArr = [];
//     // let r = callback();
//     // console.log(callback());

//     for (let i = 0; i < this.length; i++) {
//         if (callback(this[i], i, this)) {
//             filterArr.push(this[i]);
//         }
//     }
//     return filterArr;
// }

// console.log(arr.my_filter(item => item > 2));


// Array.prototype.my_every = function (callback) {
//     for (let i = 0; i < this.length; i++) {
//         if (!callback(this[i])) {
//             return false;
//         }
//     }
//     return true;
// }

// console.log(arr.my_every(item => item > 0))

Array.prototype.my_reduce = function (callback, ...arg) {
    let pre, start = 0;
    arg.length ? pre = arg[0] : (pre = this[0], start = 1)
    for (let i = 0; i < this.length; i++) {

    }
}